#pragma once
#include"event_loop.h"
#include"reactor_buf.h"
#include"net_connection.h"


class tcp_conn: public net_connection{
public:
    // 构造初始化
    tcp_conn(int connfd, event_loop *loop);
    ~tcp_conn();

    // 被动处理读事件的方法，由event_loop监听触发的
    void do_read();

    // 被动处理写事件的方法，由event_loop监听触发的
    void do_write();

    // 主动发送消息的方法
    virtual int send_message(const char* data, int msglen, int msgid);

    // 销毁当前链接
    void clean_conn();

    // 提供一个获取当前fd的函数
    virtual int get_fd(){
        return _connfd;
    }

private:
    // 当前链接的fd
    int _connfd;

    // 当前的链接归属于哪个event_loop
    event_loop* _loop;

    // 输入和输出的buf缓冲区
    input_buf ibuf;
    output_buf obuf;

};

